package com.icinfo.cloud.provider.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.util.ObjectUtils;

/**
 * 描述： 文书模板类型枚举类
 *
 * @author: zhengqiang
 * @date: 2022/6/29
 **/
@AllArgsConstructor
@Getter
public enum DocumentTemplateTypeEnum {
    /**
     * 模板类别：1 标准模板 2 窄幅模板
     */
    STANDARD_TEMPLATE("1", "standard","标准模板"),
    NARROW_TEMPLATE("2","narrow", "窄幅模板");

    /**
     * 编码
     */
    private String code;
    /**
     * 映射编码
     */
    private String mappingCode;
    /**
     * 描述
     */
    private String des;

    /**
     * 根据code获取value
     *
     * @param code 编码
     * @return {@link String }
     * @author shishengyao
     * @date 2022/02/23
     */
    public static String getValueByCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (DocumentTemplateTypeEnum e : DocumentTemplateTypeEnum.values()) {
            if (code.equals(e.getCode())) {
                return e.getDes();
            }
        }
        return null;
    }

    /**
     * 根据code获取mappingCode
     *
     * @param code 编码
     * @return {@link String }
     * @author shishengyao
     * @date 2022/02/23
     */
    public static String getMappingCodeByCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (DocumentTemplateTypeEnum e : DocumentTemplateTypeEnum.values()) {
            if (code.equals(e.getCode())) {
                return e.getMappingCode();
            }
        }
        return null;
    }

    /**
     * 描述：校验code是否是合法枚举
     *
     * @param code 枚举code
     * @return boolean
     * @author shishengyao
     * @date 2022/02/23
     */
    public static boolean isLegalEnumCode(String code) {
        boolean flag = false;
        for (DocumentTemplateTypeEnum e : DocumentTemplateTypeEnum.values()) {
            if (e.getCode().equalsIgnoreCase(code)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }
}
